package so.sao.shop.supplier.dao;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import so.sao.shop.supplier.domain.CheckingAccountAlipay;
import so.sao.shop.supplier.domain.CheckingAccountResult;
import so.sao.shop.supplier.pojo.input.CheckOrderSearchInput;
import so.sao.shop.supplier.pojo.output.CheckingAccountOrder;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import so.sao.shop.supplier.domain.CheckingAccountResult;

import java.util.List;

/**
 * <p>Version: supplier V1.2.0 </p>
 * <p>Title: CheckingAccountResultDao</p>
 * <p>Description: 对账结果</p>
 *
 * @author: fangzhou
 * @Date: Created in 2017/11/22 11:17
 */
@Mapper
public interface CheckingAccountResultDao {

    /**
     * 根据条件查询财务订单列表
     * @param checkOrderSearchInput 查询条件
     * @return List<CheckingAccountOrder> 订单列表
     */
    List<CheckingAccountOrder> findAll(CheckOrderSearchInput checkOrderSearchInput);

    /**
     * 根据对账类型查询对账结果
     * @param checkingType 对账状态
     * @param Id 用户id
     * @param recordId 对账记录id
     * @return
     */
    List<CheckingAccountResult> selectMatchingRecordByCheckType(@Param("checkingType")Integer checkingType, @Param("Id") Long Id, @Param("recordId") Long recordId);

    /**
     * 查询对账结果的收款类型
     * @param list
     * @return
     */
    List<String> findReceiptTypeByPayId(List<CheckingAccountAlipay> list);

    /**
     * 将对账结果写入数据库
     * @param list
     */
    void saveResult(List<CheckingAccountResult> list);

    /**
     * 根据记录号查出已银货两讫的支付流水号
     * @param recordId
     * @return
     */
    List<CheckingAccountResult> findOverPaymentNum(@Param("recordId") Long recordId);

    /**
     * 删除结果表自身以前对账未银货两讫但是本次银货两讫的数据
     * @param list
     */
    void delete(List<CheckingAccountResult> list);
}
